package com.ck.client.service;

import com.ck.client.model.vo.DeviceBindMsg;
import com.ck.common.model.OperationResult;

public interface BindService {

	/**
	 *   根据门店序列号获取门店id
	 *
	 * @param storeSerialNum 门店序列号
	 */
	Long getStoreIdBySerialNum(String storeSerialNum);

	/**
	 *   根据门店id获取门店序列号
	 *
	 * @param storeId 门店id
	 */
	String getSerialNumByStoreId(Long storeId);

	/**
	 * 校验设备序列号是否唯一
	 * @param storeId
	 * @param deviceSerialNum
	 * @return
	 */
	Boolean deviceSerialNumExisted(Long storeId,String deviceSerialNum);

	/**
	 * 设备绑定门店
	 * @param bindMsg
	 * @return
	 */
	OperationResult bind(DeviceBindMsg bindMsg);

	/**
	 * 将mac地址与设备唯一编码绑定起来
	 * //  前置条件：后台已导入该mac地址
	 * @param mac
	 * @param deviceCode
	 * @param serialNum
	 * @return
	 */
	Boolean macBind(String mac, String deviceCode, String serialNum);


	/**
	 * 查找系统是否有某个ip的设备访问记录。如有，则去最近一条访问记录的门店信息（id）
	 * @param ip
	 * @return
	 */
	Long getStoreIdWithRecentlyIP(String ip);

	/**
	 * 校验是否已经绑定
	 * @param deviceCode
	 * @return
	 */
	Boolean isDeviceCodeBinded(String deviceCode);

	/**
	 * 生成设备序列号
	 * @param storeId
	 * @return
	 */
	String generateDeviceSerialNum(Long storeId);

	/**
	 * 根据mac获取门店id
	 * @param mac
	 * @return
	 */
	Long getStoreIdWithMac(String mac);

	/**
	 *  根据deviceCode对应的门店信息，查找是否有与该门店名相同的分组名，有则返回分组id
	 * @param deviceCode
	 */
	Long getDeviceGroupWithStore(String deviceCode);
}
